package com.geowiki.service;

import com.geowiki.model.Usuario;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public class UsuarioServiceImpl implements UsuarioService {
	
	private EntityManager em;

    @PersistenceContext
    public void setEntityManager(EntityManager em) {
        this.em = em;
    }
    
    private EntityManager getEntityManager() {
        return em;
    }

	@Override
	public Usuario find(Long idUsuario) {
		return em.find(Usuario.class, idUsuario);
	}

	@SuppressWarnings("unchecked")
	public List<Usuario> findAll() {		
		Query query = getEntityManager().createQuery("select u FROM Usuario u");
        return query.getResultList();		
	}

	@Override
	public void remove(Long idUsuario) {		
		Usuario usuario =  find(idUsuario);
		if (usuario != null){
			em.remove(usuario);
		}
	}

	@Override
	public void save(Usuario usuario) {
		if (usuario.getIdUsuario() == null ){		
		// new
			em.persist(usuario);
		}else{
		// update
			em.merge(usuario);
		}
		
	}

}
